
//class ReadAndWrite {
//    // 读入对象
//    // 快速读入对象
//    StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//    // 字符串快速读入对象
//    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//    // 快速输出对象
//    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
//
//    // 读入整数
//    public int readInt() {
//        try {
//            st.nextToken();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return (int) st.nval;
//    }
//
//    // 读入长整型整数
//    public long readLong() {
//        try {
//            st.nextToken();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return (long) st.nval;
//    }
//
//    // 读入浮点数
//    public double readDouble() {
//        try {
//            st.nextToken();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return st.nval;
//    }
//
//    // 读入字符串
//    public String readString1() {
//        String s = null;
//        try {
//            s = br.readLine();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return s;
//    }
//
//    public String readString2() {
//        try {
//            st.nextToken();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return st.sval;
//    }
//
//    public static void main(String[] args) {
//        ReadAndWrite readAndWrite = new ReadAndWrite();
//        // 读入整数
//        int i = readAndWrite.readInt();
//        readAndWrite.out.println(i);
//        // 将缓冲区的数据刷新
//        // 只有将缓冲区的数据进行刷新，才会在控制台进行输出
//        readAndWrite.out.flush(); // 一定要写否则数据不会真正输出
//
//        // 读入长整数
//        long l = readAndWrite.readLong();
//        readAndWrite.out.println(l);
//        readAndWrite.out.flush();
//
//        // 读入浮点数
//        double d = readAndWrite.readDouble();
//        readAndWrite.out.println(d);
//        readAndWrite.out.flush();
//
//        // 读入字符串
//        String s = readAndWrite.readString1();
//        readAndWrite.out.println(s);
//        readAndWrite.out.flush();
//
//        s = readAndWrite.readString2();
//        readAndWrite.out.println(s);
//        readAndWrite.out.flush();
//    }
//}
//
//class Read1 {
//    StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
//
//    public int nextInt() throws IOException {
//        st.nextToken();
//        return (int)st.nval;
//    }
//
//    public long nextLong() throws IOException {
//        st.nextToken();
//        return (long) st.nval;
//    }
//
//    public double nextDouble() throws IOException {
//        st.nextToken();
//        return st.nval;
//    }
//
//    public String nextLine() throws IOException {
//        return br.readLine();
//    }
//}

import java.io.*;
class Read {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StreamTokenizer st = new StreamTokenizer(br);

    public int nextInt() throws IOException {
        st.nextToken();
        return (int)st.nval;
    }

    public long nextLong() throws IOException {
        st.nextToken();
        return (long)st.nval;
    }

    public double nextDouble() throws IOException {
        st.nextToken();
        return st.nval;
    }

    public String nextLine() throws IOException {
        return br.readLine();
    }
}

public class Main {
    static int[] st;
    static StringBuffer str = new StringBuffer();
    static int n;
    public static void main(String[] args) throws IOException {
        Read read = new Read();
        n = read.nextInt();
        st = new int[n+1];
        dfs(1);
    }
    public static void dfs(int u) {
        if(u >= n + 1) {
            for(int i =0 ; i<str.length(); i++) {
                System.out.printf("%5c",str.charAt(i));
            }
            System.out.println();
            return;
        }

        for(int i = 1; i<=n; i++) {
            if(st[i] == 0) {
                st[i] = 1;
                str.append(i);
                dfs(u+1);
                str.deleteCharAt(str.length()-1);
                st[i] = 0;
            }
        }
    }
}